其他
如何将html中的表格数据保存下来
有时候我们想爬的数据是表格样式,(网页好丑,大家将就一下)如下图。好消息是在页面html中能找到对应的数据
但坏消息是虽然数据存在于网页内部,没有可用来获取原始数据的API。 所以,现在你必须花费精力去解析网页。 这并不难,但是浪费时间,你可以用更加事半功倍的方式去解决。
pandas
世上都说Python大法好,pandas库提供了内置的方式可以读取html文件,并从中抽取出表数据。
pandas会在网页中寻找任何符合html表形式的数据,并将其转化WieDataFrame对象作为返回结果。
Code
pandas使用方法
import pandas as pd
#header=1 显示列名;header=0,不显示
pd.read_html(url,header)
实战代码开始
import pandas as pd
url = "http://hz.house.ifeng.com/detail/2014_10_28/50087618_1.shtml"
data = pd.read_html(url,header=1)
print(data)
注意啊,这里得到的数据格式是list。
[ 序号 楼盘名称 城区 签约套数 预定套数 签约面积(㎡) 签约均价(元/㎡)
0 1.0 龙湖春江郦城 滨江 18 0 2178.61 23757.0
1 2.0 海威钱塘之星 滨江 13 0 629.55㎡ 17398.0
2 3.0 大家运河之星 拱墅 12 0 1052.72㎡ 10457.0
3 4.0 保利城市果岭 下沙 8 0 743.05㎡ 10457.0
.. ... ... ... ... ... ... ...
85 86.0 广宇锦绣桃源 拱墅 1 0 86.44㎡ 12473.0
86 87.0 景瑞申花壹号院 拱墅 1 0 89.18㎡ 21529.0
87 88.0 复地黄龙和山 西湖 0 1 0㎡ 0.0
88 89.0 中粮方圆府 下城 0 1 0㎡ 0.0
89 90.0 东方铭楼 下沙 0 16 0㎡ 0.0
90 NaN 总计签约: 主城区 216 40 21755.55㎡ NaN
[91 rows x 7 columns], 2
DataFrame对象
df.to_json()
而只要知道数据存储在DataFrame中,一切都变的简单起来。 比如我很希望数据以json记形式输出,很简单!这只是一行代码的事情。
import pandas as pd
data = pd.read_html(url,header=1)
#data数据是list类型,要先转化为dataframe
df = pd.DataFrame(data)
df.to_json(orient='records')
df.to_csv()
dataframe对象,还可以将数据输出保存为csv文件
import pandas as pd
data = pd.read_html(url,header=1)
df = pd.DataFrame(data)
#encoding为gbk编码,可以在ofiice excell中看中文不乱吗
df.to_csv('data.csv',encoding='gbk')
这里输出的虽然是csv文件,但是没有达到预期,不晓得是怎么回事。建议大家对数据做一下处理再保存到csv中。
数据采集
【视频】有了selenium,小白也可以自豪的说:“去TMD的抓包、cookie”
【视频】快来get新技能--抓包+cookie,爬微博不再是梦